package com.ht.api.call.func.impl.kf;

import com.ht.api.bean.AjaxResult;
import com.ht.api.bean.LoginBean;
import com.ht.api.call.func.IFunctionCall;
import com.ht.api.db.Db;
import com.ht.api.db.Entity;
import com.ht.api.db.exception.HtException;
import com.ht.api.open.OpenUtil;

import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;

/**
 * 删除客服账号
 * @author asq
 * @createTime 2025年3月9日 09:11:00
 */
public class KfAccountDelFunctionCall implements IFunctionCall {
	/** 接口ID：删除客服账号 */
	private static final long API_ID = 1891359969119440896L;

	@Override
	public String getName() {
		return "删除客服账号";
	}

	@Override
	public JSONObject execute(LoginBean me, JSONObject param, AjaxResult result) {

		// 查询
		String openKfid = param.getStr("open_kfid");

		long count = Db.createSqlParser("position_channel").where("relation_id", openKfid).count(me.getDataSource());

		if (count > 0) {
			throw new HtException("客服账号已使用，不能删除！");
		}

		Entity kfAccount = Db.createSqlParser("kf_account").select("main_id,appid")
				.findById(me.getDataSource(), param.getStr("main_id"));

		// 调用企微接口删除账号
		String appId = kfAccount.getStr("appid");
		String str = OpenUtil.call(appId, API_ID, param);
		
		// 如果企微接口调用成功，则操作本地数据库
		JSONObject obj = JSONUtil.parseObj(str);
		if (obj.getInt("errcode") == 0) {
			Db.delete(me.getDataSource(), kfAccount);
		} else {
			throw new HtException("企微接口返回错误：" + obj.getStr("errmsg"));
		}
		
		return JSONUtil.createObj();
	}

}
